package cn.baddonkey.superquery.service;

import cn.baddonkey.superquery.dao.ModuleBaseInfoMapper;
import cn.baddonkey.superquery.exception.ServiceException;
import cn.baddonkey.superquery.model.ModuleBaseInfo;
import cn.baddonkey.superquery.request.ModuleAddRequest;
import cn.baddonkey.superquery.request.ModuleUpdateRequest;
import cn.baddonkey.superquery.utils.BeanUtils;
import cn.baddonkey.superquery.vo.ModuleBaseInfoVo;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ModuleBaseInfoService extends ServiceImpl<ModuleBaseInfoMapper, ModuleBaseInfo> {

    public List<ModuleBaseInfoVo> listAll() {
        List<ModuleBaseInfo> list = this.lambdaQuery().eq(ModuleBaseInfo::getIsDeleted, 0).list();
        List<ModuleBaseInfoVo> moduleBaseInfoVos = BeanUtils.batchTransform(list, ModuleBaseInfoVo.class);
        return moduleBaseInfoVos;
    }


    public void add(ModuleAddRequest request) {
        ModuleBaseInfo one = this.lambdaQuery().eq(ModuleBaseInfo::getModuleCode, request.getModuleCode()).one();
        if (one != null) {
            throw new ServiceException("code已经存在");
        }
        ModuleBaseInfo transform = BeanUtils.transform(request, ModuleBaseInfo.class);
        this.save(transform);
    }

    public void modify(ModuleUpdateRequest request) {
        LambdaUpdateWrapper<ModuleBaseInfo> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(ModuleBaseInfo::getModuleName, request.getModuleName());
        updateWrapper.set(ModuleBaseInfo::getModuleDesc, request.getModuleDesc());
        updateWrapper.eq(ModuleBaseInfo::getId, request.getId());
        this.getBaseMapper().update(null, updateWrapper);
    }

}
